Presence includes the ability and willingness to communicate using a variety of devices and media. Presence information can include location, preferred communication mode, current mood and activity, phone status, user-specified status, expertise, etc. Presence information is utilized by enterprises as well as service providers.
A presentity is a source of presence information, and can represent a user, a group of users, or a program. A watcher or subscriber can include a requester of presence and/or information about a presentity. Additionally, a presence server (PS) includes a repository of presence information of some or all presentities in a domain. A presence server can handle messages such as, for example, SUBSCRIBE, PUBLISH and NOTIFY.
Traditional use of presence information has primarily been limited to Instant Messenger and related services. The usage of presence in advanced systems such as social networks has resulted in an increase in messaging load within presence-based networks as well as on nodes such as presence servers. Factors affecting load on presence servers can include request rate; that is, the number of messages received and distributed by the presence server per second. Additionally, the number of PUBLISH messages received depends on the average number of presentities and their PUBLISH rates. Also, the number of SUBSCRIBE messages received and NOTIFY messages sent are factors of the number of watchers for each presentity.
Other factors affecting load on presence servers can include filter document size or the number of rules. Every notification is generated after performing a rule matching process and applying the matched filter rules. The processing of this step depends on the number of rules in the policy document of the presentity. Additionally, a consideration includes the type of composition policies that the server supports and application of the policies (that is, a different policy being used on a per presentity basis or applied globally on the server for all presentities).
Further, the size of a watcher filter sent by the watcher in a SUBSCRIBE message affects both the processing and amount of traffic generated. Additionally, a partial notification mechanism can be used to conserve bandwidth by sending only the changes in the presence document to the watchers. The server can then compare the updated document with the old document for the presentities and generate the partial presence document.
Analysis of traffic in presence systems has shown that the NOTIFY messages often account for the largest portion of the traffic load on a presence server, and refreshing SUBSCRIBE messages often accounts for the second largest load on the presence server followed by the PUBLISH load.
Existing approaches attempting to handle load on presence servers include load balancing, where multiple physical servers share the load. Such an approach, however, is cost ineffective and also is not a scalable solution to meet growing demands. Other existing approaches include virtual presence, wherein a middleware subscribes to a presence server on behalf of a set of watchers.